home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene 96
/
Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso
/
misc
/
coding
/
letterzm
/
lzoon.asm
< prev
next >
Wrap
Assembly Source File
|
1996-03-29
|
4KB
|
173 lines
model tiny
codeseg
.386
char_pos=40 ;40 from left border
num_char = offset end_dial - offset dial
org 100h
start:
mov ax,0a000h
mov es,ax
mov ax,13h
int 10h ;std-vga-mode
xor dx,dx ;dx is char-pointer
zoomagain:
;del_char
xor di,di
xor eax,eax
mov cx,16000
rep stosd ;just delete it all
;del_char end
mov bp,2 ;first char is 2x2
doitagain:
lea bx,dial ;pointer to loc. of display string
add bx,dx ;add the char-pointer to get current char
push dx ;save char-pointer to go on after this rountine
call disp_char
mov dx, 03dah
vrt:
in al, dx
test al, 8
jnz short vrt
novrt:
in al, dx
test al, 8
jz short novrt
mov dx, 03dah
vrt2:
in al, dx
test al, 8
jnz short vrt2
novrt2:
in al, dx
test al, 8
jz short novrt2
mov ah,1
int 16h ;the keyboard-check
jnz short raushier ;exit when ESC
pop dx ;restote char-pointer
inc bp ;make it bigger
cmp bp,28 ;till it's as big as screen
jne short doitagain ;print char 2x bigger
inc dx ;position is display-string
cmp dx,num_char ;new chars till there are no more of them
jne short zoomagain ;print the next char
raushier: ;goto dos
mov ax,3
int 10h
lea dx,dial
mov ah,9
int 21h
int 20h
disp_char:
mov col,38 ;start color
add col,dl ; add char-pointer to make every char look different
;PRINT_CHAR
mov si,char_pos ; position in video meory
mov al,[bx]
xor ah,ah
shl ax,3
mov di,0fa6eh ; char-table start
add di,ax
mov dl,8 ; vertical pixels
mk0:
push ds
mov ax,0f000h
push ax
pop ds ; char-table segment in ES
mov al,ds:[di] ; get first line
pop ds
mov dh,8 ; horizontal pixels
mk1: rcl al,1 ; get the bits
jnc short nopixel ; if zerro-bit -> don't set a pixel
;set a pixel
push ax
mov al,col
call setpoint
pop ax
jmp short mk3
;kill pixel
nopixel:
push ax
xor al,al
call setpoint
pop ax
mk3: add si,bp ; next pixel
dec dh ; next horizontal pixel in char-table
jnz short mk1 ; repeat till there are 8 pixels set
inc di ; next vertical line of the char
mov ax,bp
shl ax,3
sub si,ax
mov ax,320
mov bx,bp
dec bx
push dx
mul bx
pop dx
add si,ax
dec col
dec dl
jnz short mk0 ; repeat till there are all 8 lines set
;PRINT_CHAR-END
ret
;end of disp_char
setpoint:
push dx ;SET_POINT
mov bx,si
mov dx,bp
dec dx
yloop:
mov cx,bp
xloop:
mov byte ptr es:[bx],al
inc bx
loop xloop
dec dx
jz short not_again
add bx,320
sub bx,bp
jmp short yloop
not_again:
pop dx ;SET_POINT-END
ret
dial db 'CALL TRIOPTIMUM NOW! +41313027385'
end_dial:
db '$'
col db ?
ends
end start
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ █▄▄ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ SysGod: Deímos █▄▄ █▄▄▄ TRiOPTiMUM █
█ USRobotics 28.8k █▄▄▄ █▄▄▄▄▄▄▄▄▄ █
█ One Gigabyte Online █▄▄▄▄▄▄▄▄▄ █▄▄▄▄▄▄▄█
█ Warez ■ Underground ■ Viriis █▄▄▄▄▄▄▄▄▄▄
█ FNF WHQ ■ moz[IC]art Memberboard █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
+41.313.027385
The Sharom broke apart like an egg and began to drift down,
falling, an obsidian inferno. Darkness spread across the sky,
swallowing the sun in unnatural night,
as if the light of those flames was blackness.